<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    <!-- 
        数据类型分为两大类

        1.基本数据类型（简单数据类型）
         Number  String   Boolean    Undefined   Null

         检测 基本数据类型的方法 typeof  返回值
         "number"  "string"  "boolean"  "undefined"   "object"
          
         "function"

        2.引用数据类型（复杂数据类型）

          Array   Date    Functon   Object    RegExp 等   

          检测引用类型方法

          instanceof


        3.为什么说是数组是引用类型，引用类型的来历是什么？

         变量 是栈内存中   空间  地址编号 0x123   
         数据在堆内存中  存放   也会有地址编号0x123    两个地方有一个引号关联起来， 引用类型


         4.浅拷贝和深拷贝的问题
         var arr=[10,20,30]
         var arr1=arr;
         浅拷贝: 是拷贝的 地址编号，其中两个数组中任何一个数组中数据进行修改，两个数组中的数据同时修改，  修改原数组

        深拷贝： 堆里的数据被拷贝了一份，地址编号 是不一样的，修改其中一个数据中的数据，另一个数组不支同步修改
     -->
     <script>

        // var  arr=[10,20];
        // console.log(arr);
        // console.log(typeof arr);//object

        // var date=new Date();
        // console.log(typeof date);//object

        // // 引用类型 用typeof 检测不合适 返回值都是 "object"


        // // 检测引用类型方法   instanceof

        // console.log(arr instanceof Array);//true
        // console.log(arr instanceof Date);//false

        // console.log(date instanceof Date);//true


        // 浅拷贝

        // var  arr=[10,20,30];
        // var arr1=[];
        // arr1=arr;

        //   console.log(arr,arr1);

        //   arr[1]='hello';
        //   console.log(arr,arr1);

        //   深拷贝


    var  arr=[10,20,30];
    var arr1=[];

    for(var i=0;i<arr.length;i++){
        //  arr1[i]=arr[i]
        arr1[arr1.length]=arr[i];// 在数据的末尾添加数据  ，只需要length的位置添加即可 
                                //  legth 永远比索引号大1
    }
    console.log(arr1,arr);
    arr[1]='hello';
    console.log(arr,arr1);



     </script>
</body>
</html>